package com.example.project.projectspringcloud.service.order;

import com.example.project.projectspringcloud.common.OperationException;
import com.example.project.projectspringcloud.entity.Page;
import com.example.project.projectspringcloud.entity.order.Order;
import com.example.project.projectspringcloud.entity.order.OrderMake;

import java.util.List;
import java.util.Map;

public interface OrderService {

    /**
     * 获取订单
     * ==============================================================================
     *
     * @param order
     * @return
     */
    Order get(Order order);

    /**
     * 获取订单列表
     * ==============================================================================
     *
     * @param page
     * @param order
     * @return
     */
    List<Order> list(Page page, Order order);

    /**
     * 保存或更新订单
     * ==============================================================================
     *
     * @param order
     * @return
     * @throws OperationException
     */
    boolean save(Order order) throws OperationException;

    /**
     * 删除订单
     * ==============================================================================
     *
     * @param ids
     * @return
     */
    boolean delete(Integer[] ids);

    /**
     * 创建订单
     * ==============================================================================
     *
     * @param orderMake
     * @return
     * @throws OperationException
     */
    Map create(OrderMake orderMake) throws OperationException;

    /**
     * 校验支付回调信息
     * ==============================================================================
     *
     * @param param
     * @return
     * @throws OperationException
     */
    Map validate(Map param) throws OperationException;

    /**
     * 更新订单状态
     * ==============================================================================
     *
     * @param orderId
     * @param status
     * @return
     * @throws Exception
     */
    boolean status(Integer orderId, Integer status) throws Exception;
}
